package pfc.view.control;

import java.awt.Component;
import java.awt.Dimension;
import java.beans.PropertyVetoException;

import javax.swing.JDesktopPane;
import javax.swing.JInternalFrame;

import org.apache.log4j.Logger;

import pfc.view.Main;
import pfc.view.view.components.view.Maximized;

public class ScreenManager {

	private static final Logger logger = Logger.getLogger(ScreenManager.class); // @jve:decl-index=0:

	public static void manage(JInternalFrame tela) {
		int x = 0;
		int y = 0;
		
		JDesktopPane panel = Main.panel;

		Component[] components = panel.getAllFrames();

		for (int comp = 0; comp < components.length; comp++) {
			JInternalFrame component = (JInternalFrame) components[comp];
			if (component.getTitle().equals(
					tela.getTitle())) {
				if (component.isIcon()) {
					try {
						component.setMaximum(true); // isso parece idiota, mas foi o único jeito encontrado
						component.setMaximum(false); // pra 'desiconificar' a janela
					} catch (PropertyVetoException e) {
						logger.warn("Não foi possível restaurar a janela: "
								+ component.getClass().getName(), e);
					}
				} else {
					component.toFront();
					component.setVisible(true);
				}
				if(component instanceof Maximized){
					try {
						component.setMaximum(true);
						component.setSelected(true);
					} catch (PropertyVetoException e) {

					}
				}
				return;
			}
		}
		if (panel.getComponentCount() > 0) {
			Component comp = panel.getComponent(0);
			x = comp.getX() + 20;
			y = comp.getY() + 20;
			tela.setLocation(x, y);
		}
		
//		if (tela instanceof TelaLogin) {
//			tela.setVisible(false);
//		}else{
//			tela.setVisible(true);
//		}
		
		panel.add(tela, 0);
		
		tela.putClientProperty("JInternalFrame.frameType", "optionDialog");
		
		Dimension d = panel.getSize();
		tela.setLocation(d.width / 2 - tela.getWidth() / 2, d.height / 2
				- tela.getHeight() / 2);
		try {
			if(tela instanceof Maximized){
				tela.setMaximum(true);
			}else{
				tela.setMaximum(false);
			}
		} catch (PropertyVetoException e1) {
			logger.warn("Não foi possível restaurar a janela: "	+ tela.getClass().getName(), e1);
		}
	}
}

